#!/bin/sh

#set timeout 30
#spawn ssh kylin@192.168.1.162
#expect "password:"      #判断上次输出结果里是否包含“password:”的字符串，如果有则立即返回，向下执行；否则就一直等待，直到超时时间到
#send "123qwe\n"         #执行交互动作，与手工输入密码的动作等效。效果上跟用户手动在终端上输入123456之后敲一个回车一样。
#interact                        #执行完成上述命令后保持在交互状态，此时Expect会把控制权交给控制台，这个时候就变回手工操作，Expect已经执行完成。如果没有这一句登录完成后会立刻退出，而不是留在远程终端上。如果你只是登录过去执行一段命令就退出，可将其改为［expect eof］
script_dir=$(cd $(dirname $0);pwd)
UserName=book

#在当前目录下生成生成ssh key
if [ ! -f "/$script_dir/.ssh/id_rsa" ]; then ssh-keygen -t rsa -b 2048 -N '' -f $script_dir/.ssh/id_rsa;fi

# 1. 批量ssh认证建立
for p in $(cat $ClientList)	#注意ip.txt文件的绝对路径
do
    ip=$(echo "$p"|cut -f1 -d":")	#取ip.txt文件中的ip地址
    password=$(echo "$p"|cut -f2 -d":")	#取ip.txt文件中的密码
	expect -c "
    set timeout 5;
	spawn ssh-copy-id -i $script_dir/.ssh/id_rsa.pub $UserName@$ip 
		expect {
			\"*yes/no*\" {send \"yes\r\"; exp_continue}
			\"*password*\" {send \"$password\r\"; exp_continue}
			}
"
done




set timeout 5
spawn ssh kylin@192.168.31.135 "mkdir ~/123"
expect "password:"
send "123qwe\n"